home *** CD-ROM | disk | FTP | other *** search
- Decription of upcoming version of WINTERP (1.14):
- ==============================================================================
- # WINTERP Copyright 1989, 1990, 1991 Hewlett-Packard Company (by Niels Mayer).
- # XLISP version 2.1, Copyright (c) 1989, by David Betz.
- #
- # Permission to use, copy, modify, distribute, and sell this software and its
- # documentation for any purpose is hereby granted without fee, provided that
- # the above copyright notice appear in all copies and that both that
- # copyright notice and this permission notice appear in supporting
- # documentation, and that the name of Hewlett-Packard and David Betz not be
- # used in advertising or publicity pertaining to distribution of the software
- # without specific, written prior permission. Hewlett-Packard and David Betz
- # make no representations about the suitability of this software for any
- # purpose. It is provided "as is" without express or implied warranty.
-
- At the time of this 1.13 WINTERP release, I actually have version 1.14 up
- and running, but I haven't had enough time to test it extensively, nor have
- I had time to find out whether it is portable or not.
-
- Thus, I went ahead and released version 1.13, which is known to be portable
- because it is directly derived from version 1.12, which seems to be
- portable. I figured I'd be better off releasing something reliable and
- portable for the X11r5 contrib tape.... Version 1.14 has many new features,
- and an all-new XLISP, and therefore has great potential for trouble.
-
- I plan to have version 1.14 available in a few weeks to a few months,
- depending on how my schedule goes. Put yourself on the WINTERP mailing list
- if you want to find out about the 1.14 release, or watch for an
- announcement on comp.windows.x/comp.windows.x.motif.
-
- --------------------
-
- Version 1.14 will include the following new features:
-
- * Ability to communicate with interactive unix programs running as WINTERP
- subprocesses -- allow easy GUI construction around existing Unix
- applications. THis is partially implemented via an interface to Don Libes'
- expect library. When combined with a higher-level interface to
- XtAppAddInput(), the effect you get is very similar to the way gnuemacs
- uses process-filter/process-sentinel to run asynchronous subprocesses.
- This allows you to have widget displays which dynamically display the
- output of a subprocess, while the rest of the UI is still "active" and able
- to carry out it's intended actions.
-
- * Trace and backtrace of
- callbacks
- event handlers
- action procedures
- timeouts
- input callbacks
-
- * Callbacks and event handlers can directly access instance
- variables of subclassed widgets.
-
- * Resource to specify a load-path
-
- * Callbacks (hooks) that fire upon a lisp error -- user can attach
- arbitrary code in order to do things like pop up a dialog box warning of
- error.
-
- * All new improved version XLISP (xlisp 2.1c)
- -- faster, faster garbage collect, uses less memory
- -- closer to Common Lisp
- -- features conditionally compilable
-
- For more info on xlisp 2.1c see below:
-
- --------------------
-
- From: toma@sail.LABS.TEK.COM (Tom Almy)
- Newsgroups: comp.lang.lisp.x
- Subject: Enhanced XLISP differences
- Date: 16 Aug 91 16:46:03 GMT
- Reply-To: toma@sail.LABS.TEK.COM (Tom Almy)
- Organization: Tektronix, Inc., Beaverton, OR.
-
- I have occasionally been asked about the differences between the
- standard XLISP 2.1 and the version I have modified (which I am now
- calling 2.1b). I have culled through my notes and produced the
- following document of the changes made. I hope I found everything.
-
- Tom Almy
- toma@sail.labs.tek.com
- Standard Disclaimers Apply
-
-
- DIFFERENCES BETWEEN XLISP 2.1 AND XLISP 2.1b
- *********************************************
-
- In the following document, CL means "Common Lisp compatible to
- the extent possible". CX means "now works with complex numbers". *
- means "implemented in LISP rather than C". # means "implementation
- moved from LISP to C".
-
- **********************Bug fixes*********************************************
-
- RESTORE did not work -- several bugs for 80x86 systems. Only one restore
- would work per session -- all systems.
-
- :downcase for variable *printcase* did not work with some compilers.
-
- Modifications to make the source acceptable to ANSI C compilers.
-
- Values for ADEPTH and EDEPTH changed to more reasonable values -- before
- this change the processor stack would overflow first, causing a crash.
-
- On systems with 16 bit integers: STRCAT crashes when aggregate size of
- argument strings were greater than 32k. MAKE-ARRAY crashes on too-large
- arrays. DOTIMES, AREF, AREF and NTH place forms of SETF,
- MAKE-STRING-INPUT-STREAM and GET-OUTPUT-STREAM-STRING treat numeric
- argument modulo 65536. MAKE-STRING-INPUT-STREAM did not check for start>end.
-
- Strings containing nulls could not be read or printed.
-
- NTH and NTHCDR failed for zero length lists.
-
- Unnamed streams did not survive garbage collections.
-
- (format nil ...) did not protect from garbage collection the unnamed stream
- it creates.
-
- SORT did not protect some pointers from garbage collection.
-
- SYMBOL-NAME SYMBOL-VALUE SYMBOL-PLIST BOUNDP and FBOUNDP failed with
- symbol NIL as argument.
-
- LAST returned wrong value when its argument list ended with a dotted pair.
-
- *gc-hook* was not rebound to NIL during execution of gchook function, causing
- potential infinite recursion and crash.
-
- Executing RETURN from within a DOLIST or DOTIMES caused the environment to
- be wrong.
-
- When errors occured during loading, which were not caught, the file would
- be left open.
-
- EVAL and LOAD did not use global environment. EVALHOOK's default environment
- was not global.
-
- Invalid symbols (those containing control characters, for instance),
- can no longer be created with intern and make-symbol.
-
- The key T, meaning "otherwise" in the CASE function used to be allowed in
- any position. Now it only means "otherwise" when used as the last case.
-
- The lexical and functional environment of send of :answer (which defines
- a new method) are now used during the method's evaluation, rather than
- the global environment.
-
- Signatures added for WKS files so that invalid ones will be rejected.
-
- Checks added for file names and identifier names being too long.
-
- Indexing code fixed to allow almost 64k long strings in 16 bit systems.
- It is no longer possible to allocate arrays or strings that are too long
- for the underlying system.
-
- Circularity checks added to PRINT LAST BUTLAST LENGTH MEMBER and MAP
- functions. An error is produced for all but MEMBER, which will execute
- correctly.
-
-
- *******************User interface changes***********************************
-
- -w command line argument to specify alternate or no workspace.
-
- -? command line argument gives usage message.
-
- init.lsp not loaded if workspace loaded.
-
- Search path can be provided for workspaces and .lsp files.
-
- Standard input and output can be redirected.
-
- Display writes are buffered.
-
- Character literals available for all 256 values. CL
-
- Uninterned symbols print with leading #:. CL
-
- PRIN1 generates appropriate escape sequences for control and
- meta characters in strings. CL
-
- Read macro #. added. CL
-
- Lisp code for nested backquote macros added. CL
-
- Read macro #C added for complex numbers. CL
-
- Semantics for #S read macro changed so that it can read in structures
- written by PRINT. CL
-
- *******************New/changed data types***********************************
- NIL -- was treated as a special case, now just a normal symbol.
- symbols -- value binding can optionally be constant or special.
- complex numbers -- new type, can be integer or real.
- character strings -- The ASCII NUL (code 0) is now a valid character.
- objects -- objects of class Class have a new instance variable
- which is the print name of the class.
- hash-table -- new type, close to CL
- random-state -- new type, CL
-
- Property list properties are no longer limited to just symbols CL
-
- *******************New variables/constants**********************************
-
- *apply-hook* Now activated
- *displace-macros* Macros are replaced with their expansions when possible
- *dos-input* MSDOS only, uses DOS interface to interact with user. Allows
- recall of earlier command(s).
- *print-level* CL
- *print-length* CL
- *random-state* CL
- *terminal-io* CL
- internal-time-units-per-second CL
- pi CL
-
- *******************New functions********************************************
-
- ACONS CL*
- ACOSH CL*
- ADJOIN CL
- APPLYHOOK CL
- ASINH CL*
- ATANH CL*
- BUTLAST CL
- CEILING CL
- CIS CL*
- CLREOL (clear to end of line -- MS/DOS only)
- CLRHASH CL
- CLS (clear screen -- MS/DOS only)
- COERCE CL
- COLOR (graphics -- MS/DOS only)
- COMPLEX CL
- COMPLEXP CL
- CONCATENATE CL
- CONJUGATE CL
- CONSTANTP CL
- COPY-ALIST CL*
- COPY-LIST CL*
- COPY-TREE CL*
- COSH CL*
- COUNT-IF CL except no :from-end
- DECF CL*
- DEFCLASS * (define a new class)
- DEFINST * (define a new instance)
- DEFMETHOD * (define a new method)
- DEFSETF CL*
- DRAW (graphics -- MS/DOS only)
- DRAWREL (graphics -- MS/DOS only)
- ELT CL
- EQUALP CL*
- EVERY CL
- FILE-LENGTH CL
- FILE-POSITION CL
- FILL CL*
- FIND-IF CL except no :from-end
- FLOOR CL
- FRESH-LINE CL
- FUNCTIONP CL*
- GENERIC (implementation debugging function)
- GET-INTERNAL-REAL-TIME CL
- GET-INTERNAL-RUN-TIME CL
- GETHASH CL
- GOTO-XY (position cursor -- MS/DOS only)
- HASH-TABLE-COUNT CL
- IDENTITY CL*
- IMAGPART CL
- INCF CL*
- INPUT-STREAM-P CL
- INTERSECTION CL
- LCM CL
- LIST* CL
- LOG CL
- LOGTEST CL*
- MAKE-HASK-TABLE CL
- MAKE-RANDOM-STATE CL
- MAP CL
- MAPHASH CL
- MODE (graphics -- MS/DOS only)
- MOVE (graphics -- MS/DOS only)
- MOVEREL (graphics -- MS/DOS only)
- NINTERSECTION CL*
- NOTANY CL
- NOTEVERY CL
- NREVERSE CL
- NSET-DIFFERENCE CL*
- NSET-EXCLUSIVE-OR CL*
- NUNION CL*
- OPEN-STREAM-P CL
- OUTPUT-STREAM-P CL
- PAIRLIS CL*
- PHASE CL
- POP CL*
- POSITION-IF CL except no :from-end
- PUSH CL*
- PUSHNEW CL*
- REALPART CL
- REDUCE CL except no :from-end
- REMHASH CL
- REMOVE-DUPLICATES CL except no :from-end
- REPLACE CL*
- ROUND CL
- SEARCH CL except no :from-end
- SET-DIFFERENCE CL
- SET-EXCLUSIVE-OR CL*
- SETF Placeform ELT CL
- SETF Placeform GETHASH CL
- SETF Placeform SEND* (set instance variable)
- SIGNUM CL*
- SINH CL*
- SOME CL
- SUBSETP CL
- TANH CL*
- TIME CL
- TYPEP CL
- UNINTERN CL*
- UNION CL
- WITH-INPUT-FROM-STRING CL*
- WITH-OPEN-FILE CL*
- WITH-OUTPUT-TO-STRING CL*
- Y-OR-N-P CL*
-
-
- ******************Changed functions****************************************
-
- &ALLOW-OTHER-KEYS CL (now functions, is no longer ignored)
- * CL CX (with no arguments, returns 1)
- + CL CX (with no arguments, returns 0)
- - CL CX
- / CX Almost CL (division of integers returns fp if no exact integer value)
- 1+ CL CX
- 1- CL CX
- ABS CL CX
- ACOS CL CX
- ALLOC (new optional second argument)
- APPLY CL (allows multiple arguments)
- AREF CL (now works on strings)
- ASIN CL CX
- ASSOC CL (added :key)
- ATAN CL CX (second argument now allowed)
- CHAR-CODE CL (parity bit is stripped)
- CLOSE CL (will close unnamed stream strings)
- COS CL CX
- DEFCONSTANT CL# (true constants)
- DEFPARAMETER CL# (true special variables)
- DEFVAR CL# (true special variables)
- DELETE (added keywords :key :start :end. Works on arrays and strings)
- DELETE-IF (added keywords :key :start :end. Works on arrays and strings)
- DELETE-IF-NOT (added keywords :key :start :end. Works on arrays and strings)
- EXP CL CX
- EXPT CL CX
- FORMAT (added directives ~D ~E ~F ~G ~& ~T ~\N and lowercase directives)
- HASH (hashes everything, not just symbols or strings)
- LOAD CL (uses path to find file)
- LOGAND CL (with no arguments, returns -1)
- LOGIOR CL (with no arguments, returns 0)
- LOGXOR CL (with no arguments returns 0)
- MAKE-STRING-INPUT-STREAM CL (:end NIL means end of string)
- MAKUNBOUND #
- MEMBER CL (added :key)
- NSTRING-DOWNCASE CL (string argument can be symbol, :end NIL means end of
- string)
- NSTRING-UPCASE CL (string argument can be symbol, :end NIL means end of
- string)
- OPEN CL (many additional options, as in Common Lisp)
- PEEK (fixnum sized location is fetched)
- PEEK-CHAR CL (input stream NIL is *standard-input*, T is *terminal-io*)
- POKE (fixnum sized location is stored)
- PPRINT (output stream NIL is *standard-output*, T is *terminal-io*)
- PRIN1 CL (output stream NIL is *standard-output*, T is *terminal-io*)
- PRINC CL (output stream NIL is *standard-output*, T is *terminal-io*)
- PRINT (output stream NIL is *standard-output*, T is *terminal-io*)
- RANDOM CL (works with random-states)
- READ (input stream NIL is *standard-input*, T is *terminal-io*)
- READ-BYTE CL (input stream NIL is *standard-input*, T is *terminal-io*)
- READ-CHAR CL (input stream NIL is *standard-input*, T is *terminal-io*)
- READ-LINE CL (input stream NIL is *standard-input*, T is *terminal-io*)
- REM CL (only two arguments now allowed, may be floating point)
- REMOVE (added keywords :key :start :end. Works on arrays and strings)
- REMOVE-IF (added keywords :key :start :end. Works on arrays and strings)
- REMOVE-IF-NOT (added keywords :key :start :end. Works on arrays and strings)
- RESTORE (uses path to find file, restores file streams)
- REVERSE CL (works on arrays and strings)
- SIN CL CX
- SORT (added :key)
- SQRT CL CX
- STRCAT * (now a macro, use of CONCATENATE is recommended)
- STRING-comparisonFunctions CL (string arguments can be symbols)
- STRING-DOWNCASE CL (string argument can be symbol, :end NIL means end of
- string)
- STRING-LEFT-TRIM CL (string argument can be symbol)
- STRING-RIGHT-TRIM CL (string argument can be symbol)
- STRING-TRIM CL (string argument can be symbol)
- STRING-UPCASE CL (string argument can be symbol, :end NIL means end of string)
- SUBLIS CL (modified to do minimum copying)
- SUBSEQ CL (works on arrays and lists)
- SUBST CL (modified to do minimum copying)
- TAN CL CX
- TERPRI CL (output stream NIL is *standard-output*, T is *terminal-io*)
- TRUNCATE CL (allows denominator argument)
- TYPE-OF (returns HASH-TABLE for hashtables, COMPLEX for complex, and LIST for
- NIL)
- UNTRACE CL (with no arguments, untraces all functions)
- WRITE-BYTE CL (output stream NIL is *standard-output*, T is *terminal-io*)
- WRITE-CHAR CL (output stream NIL is *standard-output*, T is *terminal-io*)
-
-
- ****************New messages for class Object*******************************
-
- :prin1 <stream>
- :superclass *
- :ismemberof <cls> *
- :iskindof <cls> *
- :respondsto <selector> *
- :storeon (returns form that will create a copy of the object) *
-
- ****************New messages for class Class********************************
-
- :superclass *
- :messages *
- :storeon (returns form that will recreate class and methods) *
-
-
- --
- Tom Almy
- toma@sail.labs.tek.com
- Standard Disclaimers Apply
-
-
-
-
-
-